package com.nine.face.sort;

import java.util.Arrays;

/**
 * 选择排序
 */
public class SelectionSort {

    public static void main(String[] args) {
        int[] a = {5, 3, 7, 2, 1, 9, 8, 4};
        selectionSort(a);
    }

    private static void selectionSort(int[] a) {
        // i 表示每轮选择最小元素要交换到的目标索引
        for (int i = 0; i < a.length - 1; i++) {
            // s 表示当前轮次最小元素的索引
            int s = i;
            for (int j = s + 1; j < a.length; j++) {
                if (a[s] > a[j]) {
                    s = j;
                }
            }
            if (s != i) {
                swap(a, s, i);
            }
            System.out.println("第 " + (i + 1) + " 次选择：" + Arrays.toString(a));
        }
    }

    // 交换数组元素
    private static void swap(int[] a, int i, int j) {
        int t = a[i];
        a[i] = a[j];
        a[j] = t;
    }

}
